/*
 *    Copyright 2009 The JUnice Team
 *
 *    Licensed under the Apache License, Version 2.0 (the "License");
 *    you may not use this file except in compliance with the License.
 *    You may obtain a copy of the License at
 *
 *       http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */
package com.googlecode.junice;

import com.googlecode.junice.annotation.MockFramework;
import com.googlecode.junice.annotation.MockType;
import com.googlecode.junice.mock.MockEngine;
import com.googlecode.junice.mock.framework.EasyMockFramework;
import com.googlecode.junice.mock.framework.MockitoFramework;

/**
 * Factory class to create the mock framework.
 *
 * @see MockFramework
 * @author Marco Speranza
 * @version $Id: MockEngineFactory.java 000 2009-12-01 00:00:00Z marco.speranza79 $
 */
final class MockEngineFactory {

    /**
     * Mock factory constructor.
     * <br>
     * Supported framewors:
     * <li> {@link MockType}.EASY_MOCK
     * <li> {@link MockType}.MOCKITO
     * <br>
     *
     * @see MockType
     * @param type of mock framework to create.
     * @return An instance of mock framework.
     */
    public static MockEngine getMockEngine(MockType type) {
        switch (type) {
            case EASY_MOCK:
                return new EasyMockFramework();

            case MOCKITO:
                return new MockitoFramework();

            default:
                throw new IllegalArgumentException("Unrecognized MockeType '"
                        + type.name()
                        + "'");
        }
    }

}
